package com.bbs.web;

import com.bbs.common.dto.ForumListDTO;
import com.bbs.common.vo.DataResult;
import com.bbs.dto.ForumSaveDTO;
import com.bbs.service.ForumService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

@RestController
@RequestMapping("/forum")
public class ForumController {

    @Autowired
    private ForumService forumService;

    @PostMapping("save")
    public DataResult save(@Valid @RequestBody ForumSaveDTO saveDTO) {
        forumService.save(saveDTO);
        return DataResult.success();
    }

    /**
     * @GetMapping 与 @RequestBody 不匹配
     * @GetMapping 通常用于处理 GET 请求，GET 请求的请求体一般是空的。因此，当你试图通过 @RequestBody 读取请求体时，服务器无法找到该数据，导致错误。
     * 解决方法：如果你需要接收请求体，考虑使用 @PostMapping 而不是 @GetMapping
     */
    @PostMapping("list")
    public DataResult list(@RequestBody ForumListDTO listDTO) {
        return DataResult.success(forumService.list(listDTO));
    }

    @PostMapping("myList")
    public DataResult myList(@RequestBody ForumListDTO listDTO) {
        return DataResult.success(forumService.myList(listDTO));
    }


//    @GetMapping("all")
//    public DataResult all() {
//        return DataResult.success(forumService.all());
//    }
//
//    @GetMapping("my")
//    public DataResult my() {
//        return DataResult.success(forumService.my());
//    }

//    @GetMapping("delete")
//    public DataResult delete(@RequestParam("id") int id) {
//        forumService.delete(id);
//        return DataResult.success();
//    }

    // 使用patch（更符合restful风格，部分更新；put资源全部更新）
    @PatchMapping("delete/{id}")
    public DataResult delete(@PathVariable int id) {
        forumService.delete(id);
        return DataResult.success();
    }

    @GetMapping("detail")
    public DataResult detail(@RequestParam("id") int id) {
        return DataResult.success(forumService.detail(id));
    }

}
